#ifndef __AtConfig_h
#define __AtConfig_h

#include <Arduino.h>
#include <EEPROM.h>
#include <ArduinoJson.h>

#define ATCONFIG_DEBUG_LEVEL 1

#define SerialAT Serial

#define ADDR_BASE_CONF 10


struct BaseConf
{
  char name[20];        // 设备名称
  char version[10];     // 版本号
  char model[10];       // 型号
  char create_time[20]; // 设备创建时间

  char wifi_ssid[20];     // 设备WiFi
  char wifi_password[20]; // 设备密码

  char mqtt_server[20];   // 服务器地址
  int mqtt_port = 0;      // 端口
  char mqtt_clientid[32]; // clientid
  char mqtt_sub[30];      // 订阅本机主题
  char mqtt_sub_sys[30];  // 订阅系统主题
  char mqtt_pub[30];      // 推送主题
  char mqtt_user[10];     // 用户
  char mqtt_password[10]; // 密码

  int inf_nobody_timeout=5000; // 红外无人超时检测时间
};

// 运行状态
enum sAtConfig
{
  ATCONFIG_START,
  ATCONFIG_CONF,
  ATCONFIG_QUIT,
};

class AtConfig
{
public:
  AtConfig(); //构造函数
  void setup();
  void waitAtCommand();
  
  String getConf();
  void setConf(String json_str);

  void readConf(BaseConf *conf);
  void write(int addr, String value);
  String read(int addr);
  void waitResponse(uint32_t timeout_ms);

  // 运行状态
  int status = ATCONFIG_START;
};

#endif
